{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import malaya\n",
    "import json\n",
    "from tqdm import tqdm\n",
    "from glob import glob\n",
    "from collections import defaultdict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n"
     ]
    }
   ],
   "source": [
    "language_detection = malaya.language_detection.fasttext(model = 'mesolitica/fasttext-language-detection-v1')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !wget https://huggingface.co/datasets/mesolitica/crawl-b-cari-com-my/resolve/main/everything.jsonl\n",
    "# !wget https://huggingface.co/datasets/mesolitica/crawl-carigold/resolve/main/politics.json\n",
    "# !wget https://huggingface.co/datasets/mesolitica/crawl-carigold/resolve/main/current-issues.json\n",
    "# !wget https://huggingface.co/datasets/mesolitica/crawl-carigold/resolve/main/santai-others.json\n",
    "# !wget https://huggingface.co/datasets/mesolitica/crawl-carigold/resolve/main/everything.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "fopen_ms = open('prepare-malay-text-ms.jsonl', 'w')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "197861it [00:02, 80042.27it/s]\n"
     ]
    }
   ],
   "source": [
    "with open('/home/husein/facebook/facebook-data.jsonl') as fopen:\n",
    "    for l in tqdm(fopen):\n",
    "        l = json.loads(l)\n",
    "        if isinstance(l, dict):\n",
    "            if 'original' in l:\n",
    "                data = l['original']\n",
    "            else:\n",
    "                data = l['text']\n",
    "        else:\n",
    "            data = l\n",
    "            \n",
    "        label = language_detection.predict([data])[0]\n",
    "        if label in {'others'}:\n",
    "            continue\n",
    "        fopen_ms.write(f'{json.dumps(data)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "50000it [00:00, 433185.78it/s]\n",
      "50000it [00:00, 429392.30it/s]\n",
      "50000it [00:00, 431412.45it/s]\n",
      "15472it [00:00, 426173.37it/s]\n",
      "50000it [00:00, 414638.01it/s]\n",
      "50000it [00:00, 421712.71it/s]\n",
      "50000it [00:00, 350408.36it/s]\n",
      "50000it [00:00, 415618.35it/s]\n",
      "50000it [00:00, 422467.94it/s]\n"
     ]
    }
   ],
   "source": [
    "for f in glob('/home/husein/iium-confession/clean-iium*.splitted'):\n",
    "    with open(f) as fopen:\n",
    "        for l in tqdm(fopen):\n",
    "            data = json.loads(l)['text']\n",
    "            if label in {'others'}:\n",
    "                continue\n",
    "            fopen_ms.write(f'{json.dumps(data)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/home/husein/ssd3/carigold/politics.json',\n",
       " '/home/husein/ssd3/carigold/santai-others.json',\n",
       " '/home/husein/ssd3/carigold/current-issues.json']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "json_files = glob('/home/husein/ssd3/carigold/*.json')\n",
    "json_files = [f for f in json_files if 'topics' not in f]\n",
    "json_files"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 1353425/1353425 [00:47<00:00, 28684.87it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 1265509/1265509 [00:30<00:00, 40897.15it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 3585225/3585225 [01:54<00:00, 31202.15it/s]\n"
     ]
    }
   ],
   "source": [
    "for f in json_files:\n",
    "    with open(f) as fopen:\n",
    "        lines = json.load(fopen)\n",
    "    for data in tqdm(lines):\n",
    "        label = language_detection.predict([data])[0]\n",
    "        if label in {'others'}:\n",
    "            continue\n",
    "        fopen_ms.write(f'{json.dumps(data)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "4444726it [02:30, 29603.40it/s]\n"
     ]
    }
   ],
   "source": [
    "with open('/home/husein/ssd3/b-cari-com-my/everything.jsonl') as fopen:\n",
    "    for l in tqdm(fopen):\n",
    "        data = json.loads(l)\n",
    "        label = language_detection.predict([data])[0]\n",
    "        if label in {'others'}:\n",
    "            continue\n",
    "        fopen_ms.write(f'{json.dumps(data)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "15502919it [07:37, 33883.78it/s]\n"
     ]
    }
   ],
   "source": [
    "with open('/home/husein/ssd3/carigold/everything.jsonl') as fopen:\n",
    "    for l in tqdm(fopen):\n",
    "        data = json.loads(l)\n",
    "        label = language_detection.predict([data])[0]\n",
    "        if label in {'others'}:\n",
    "            continue\n",
    "        fopen_ms.write(f'{json.dumps(data)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "fopen_ms.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "26765137 prepare-malay-text-ms.jsonl\r\n"
     ]
    }
   ],
   "source": [
    "!wc -l prepare-malay-text-ms.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"Kalau UMNOBN Berkuasa , petrol tentu tak da subsidi....\"\r\n",
      "\"150 kerusi esok! Pastikan kita menang!\"\r\n",
      "\"Sharer\\nAbdul Hamid\"\r\n",
      "\"Hidup senah\"\r\n",
      "\"sementara admin approve tadi, saya sempat call LHDN tanya.\\n\\nLHDN kata, saya cuma perlu isi borang B utk tahun 2022, bukan borang BE macam sebelum2 ni.\"\r\n",
      "\"Ada cai yg koyak ke? \"\r\n",
      "\"Semua parti lain buat salah pkr ja betul.... Kepala hotak kau Rafizi\"\r\n",
      "\"Nyawa merupakan hakikat diri (Mahamada) yang sebenar.\\n\\nBagi orang2 yang memahami hakikat ini maka amalan mereka adalah mengikut pekerjaan nyawa dan ianya bukanlah bagi mendapatkan pahala mahupun berkehendak kepada syurga.\"\r\n",
      "\"PH THE BEST CHOICE\"\r\n",
      "\"ANWAR IBRAHIM ANGKAT SUMPAH SEBAGAI PM KE-10 TIDAK SAH\"\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 10 prepare-malay-text-ms.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"tm kata kabel laut putus\"\r\n",
      "\"Jendela Hikmah: Ajal tidak mengenal usia tua, muda\\nOleh Zulkifli Khair\\n\\nMeratapi kematian saudara secara terpekik terlolong bukan budaya Islam\\n\\nSEKEPING gambar menunjukkan sepasang suami isteri menangisi kematian anak perempuan berusia enam tahun. Pandangan berlatar belakangkan runtuhan bangunan sungguh menyayat hati. Si bapa kelihatan meriba anak yang terkulai layu tidak bernyawa, manakala riak wajah si ibu jelas berduka.\\n\\nTiada siapa dapat menyangka, tragedi gempa bumi di China baru-baru ini meragut lebih 51,000 nyawa. Kedua-dua ibu bapa itu tentu sekali tidak pernah terfikir menyangka anak kecilnya pergi dulu berbanding mereka. Maut ternyata tidak mengenal usia, tua atau muda. Ibu bapa tiada sebarang kuasa untuk merayu malaikat Izrael daripada mencabut nyawa anak kecil mereka termasuk yang masih berada dalam rahim.\\n\\nKelahiran adalah suatu anugerah begitu juga kematian suatu anugerah. Namun, fenomena alam itu tidak serupa dalam pandangan dan perasaan manusia. Dalam sesebuah keluarga, kelahiran disambut dengan penuh keceriaan. Sebaliknya, kematian ditangisi dalam suasana penuh kesedihan. Nabi Muhammad sendiri pernah mengalami keadaan sedih ini. Kematian anak kecilnya, Ibrahim misalnya disambut dengan penuh kedukaan seluruh ahli keluarga, malah nabi sendiri menitiskan air mata. Hal ini menunjukkan bahawa tiada salahnya menangis di atas pemergian si kecil, yang terlarang adalah meratap dan terpekik terlolong seperti sebahagian daripada orang bukan Islam.\\n\\nSelain itu, kematian semua anak lelaki (tanpa meninggalkan seorang pun zuriat lelaki) tidak menjadikan nabi bergelut dengan masalah kemurungan dan duka nestapa yang berpanjangan sebaliknya diterima dengan tulus pasrah, di samping sedikit pun tidak menjejaskan tanggungjawab beliau dalam membangunkan umat dan negara.\\n\\nKisah Malik bin Dinar al-Sami (meninggal dunia pada 130H/748M) menarik untuk diimbau. Diringkaskan cerita, ketika zaman berpoya-poya dan kaki minum, Malik mengimpikan seorang anak perempuan. Sebabnya, dia mendapat khabar, sesiapa yang mengasihi anak perempuan akan dapat masuk syurga.\\n\\nMaka dengan izin Allah, Malik pun dikurniakan Allah akan seorang anak perempuan. Menurut beliau, \\\"Ketika dia mula pandai berjalan, maka cintaku bertambah padanya. Setiap kali aku meletakkan minuman keras di hadapan, anak itu datang kepadaku dan mengambilnya lalu menuangkannya ke bajuku.\\n\\n\\\"Setiap kali aku hendak minum arak, tangan anakku selalu menepis tanganku, seolah-olah dia melarang aku daripada meminumnya.\\\" Malik sungguh menyayangi anak kecil itu, namun ketika berumur dua tahun, anak yang bernama Fatimah itu meninggal dunia. Sedihnya si bapa bukan kepalang.\\n\\nPada suatu malam Jumaat, pada Syaaban, Malik meneguk arak lalu tertidur sebelum solat Isyak. Dalam tidur dia bermimpi seolah-olah berada dalam Hari Kebangkitan. \\\"Aku mendengar sesuatu yang bergerak di belakang, ketika aku menoleh ke arahnya kulihat seekor ular yang sangat besar berwarna hitam kebiru-biruan sambil membuka mulut bergerak ke arahku.\\\"\\n\\nMalik lari sekuat hati. Di tengah jalan, beliau temui seorang lelaki tua dengan pakaian serba putih bersama haruman semerbak mewangi. \\\"Wahai orang tua, tolonglah selamatkan aku daripada ular itu,\\\" rayu Malik. Sambil menangis, orang tua itu menjawab, \\\"Aku begitu lemah sedangkan ular itu lebih kuat daripada aku. Aku tak mampu melawannya. Kau lari sajalah, mudah-mudahan Allah menyelamatkan engkau.\\\"\\n\\nMalik bergegas berlari lagi dan akhirnya sampailah ke pinggir neraka - keadaan sungguh kritikal, di depan neraka, di belakang pula ada ular besar dengan keadaan mulut luas ternganga! Tiba-tiba kedengaran suara, \\\"Tempat kamu bukan di sana (neraka).\\\" Malik beredar dan berjumpa lelaki tua tadi. Malik diminta cuba pergi ke gunung Amanah.\\n\\n\\\"Aku pun menuju ke tempat itu. Di sana aku bertemu dengan seorang anak kecil berwajah sangat indah,\\\" jelas Malik. Tanpa diduga, anak itu adalah anak beliau sendiri, Fatimah! Anak kecil itu pun mengusir ular besar. Kemudian mengusap janggut bapanya lalu membacakan sebahagian daripada surah al-Hadid, ayat ke-16.\\n\\nAyat Allah bermaksud: \\\"Belumkah datang waktunya bagi orang beriman untuk tunduk hati mereka mengingati Allah.\\\" Ia boleh juga dinisbahkan kepada: Apakah belum sampai seru untuk beramal soleh?\\n\\nTanya Malik kepada Fatimah berserta anak kecil lain, \\\"Apakah yang kalian buat di gunung itu?\\\" Jawab si anak kecil, \\\"Kami adalah anak muslimin yang akan berada di sini sampailah kiamat, menunggu kalian datang kepada kami.\\\"\\n\\nSelepas terjaga daripada tidur, Malik pun bertaubat, lalu menjadi seorang yang terkenal salih dan warak di sisi Tuhan.\\n\\nLelaki tua adalah gambaran amal salih, manakala ular adalah gambaran amal buruk atau dosa.\\n\\nMoga Allah anugerahkan kesabaran dan ketabahan buat mana-mana ibu bapa yang kematian si kecil dengan apapun puncanya. Bukankah anak kecil itu milik Allah juga? Dia Maha Menghidupkan dan Maha Mematikan. Menyalahkan Tuhan untuk sesuatu kematian hanyalah suatu dosa besar, cepu rasa hamba derhaka.\\n\\nTiada nas yang jelas mengenai syafaat anak kecil kepada ibu bapa (mimpi seperti di atas tetap lebih rendah darjatnya berbanding ayat al-Quran dan al-Hadis). Pertemuan semula antara ibu bapa dengan anak kecil yang mati dulu adalah suatu yang pasti dengan syarat ibu bapa tergolong dalam golongan beriman.\\n\\nHal ini diterangkan dalam nas bermaksud berikut: \\\"Dan orang beriman, dan anak cucu yang mengikuti mereka dalam keimanan, Kami hubungkan anak cucu mereka dengan mereka, dan Kami tidak mengurangi sedikit pun daripada pahala amal mereka. Setiap manusia terikat dengan apa yang dikerjakannya.\\\" (At-Tur : 21)\\n\\nKematian si kecil hakikatnya adalah suatu isyarat yang amat kuat bahawa kematian tidak mengenal usia. Yang kecil dan mentah muda tidak semestinya dilewatkan kematian, manakala yang tua dan lanjut usia pasti terlebih dulu menemui ajal. Mengingati kematian adalah satu sunnah, agar lebih bijak menguruskan kehidupan kini demi kehidupan lestari akan datang.\\n\\nPenulis adalah jurulatih dan penulis bebas dan boleh dihubungi di e-mel [email\\u00a0protected].\\n\\n#:-S #:-S #:-S\"\r\n",
      "\"\\n\\nAdsMsia said:\\n\\n\\n\\n\\n\\n\\n\\nClick to expand...\\n\\n\\n\\nDgn purata return 15% dlm tempoh 25 tahun anda boleh capai RM985,222 !!\\nkalau extend 5 tahun lagi jadi 30 tahun dah boleh capai RM2.2 juta\\n\\nitu dgn return 15% , kalau invest ke fund yg return 20-25% mcm DALI1 tentu lebih banyak jumlahnya kan \\n\\nrefer projection table ni utk tgk unjuran pulangan pelaburan anda\"\r\n",
      "\"aku pengguna firefox.. tp kalo nak running flash/shockwave mcm lembab sket la..\"\r\n",
      "\"Untuk order bateri laptop anda dengan secara tepat anda boleh lihat model yang di tulis pada bateri . sebagai contoh bateri acer \\n\\n\\n\\n\\nKemudian taip model bateri anda di dalam ini : http://bit.ly/2AxHPLi\"\r\n",
      "\"\\n\\nrayz said:\\n\\n\\n\\nasrama aku dulu penyamun banyak...semua nak curi selipar la selimut la.\\n\\nmcm haramjadah. budak2 sukan nk pakai berjenama, curi harta benda budak2 lain.\\n\\npegi masjid tibai selipar jepun kami. bawa balik selipar mahal.\\n\\nwarden azizan hasan pun xkata apa. cikgu warden paling bavi seluruh asrama.\\n\\nClick to expand...\\n\\n\\n\\nwarden azizan sekolah mana ni bro? \"\r\n",
      "\"\\n\\nNars said:\\n\\n\\n\\nemail 1 malaysia laaa selamat kot hahahahaa\\n\\nClick to expand...\\n\\n\\n\\nberbayar beb.. \"\r\n",
      "\"Tu dia dok promote referral mcm MLM ja ni.\"\r\n",
      "\"ce amik gmbo lps bgn tdo.. klo cantik,mmg konpom cantik la tu\"\r\n",
      "\"\\u0421\\u043f\\u0430\\u0441\\u0438\\u0431\\u043e \\u0437\\u0430 \\u043f\\u043e\\u043b\\u0435\\u0437\\u043d\\u0443\\u044e \\u0432\\u0438\\u043a\\u0442\\u043e\\u0440\\u0438\\u043d\\u0443!\\nThe amount of 0.2 USD has been deposited to your account. Accounts: U17701077->U123\\u0445\\u0445\\u0445\\u0445\\u0445. Memo: API Payment. \\u0412\\u0438\\u043a\\u0442\\u043e\\u0440\\u0438\\u043d\\u0430 \\u0432 \\u0447\\u0430\\u0442\\u0435 Profit-Hunters BIZ.. Date: 11:40 22.02.23. Batch: 507090248.\"\r\n"
     ]
    }
   ],
   "source": [
    "!tail -n 10 prepare-malay-text-ms.jsonl"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
